#include <iostream>

#include "PointsView.h"

PointsView::PointsView(QWidget *parent) : QWidget(parent)
{
	ui.setupUi(this);

	connect(ui.tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(cellClicked(int, int)));
}

void PointsView::SetModel(PointsModel *model)
{
	_model = model;
}

void PointsView::displayPoints()
{
	///TODO : ten slot musi byc odpalany w innym watku, bo jak jest duzy plik to wolno wczytuje
	const QPolygonF curvePoints = _model->getCurvePoints();

	/// tworze tabele z odpowiednia iloscia kolumn i wierszy
	ui.tableWidget->setRowCount(2);
	ui.tableWidget->setColumnCount(curvePoints.size());

	/// naglowek kolumn nie bedzie pokazywany
	ui.tableWidget->horizontalHeader()->setVisible(false);

	/// komorki beda klikalne, ale nieedytowalne
	ui.tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

	/// ustawiam szerokosc komorek
	ui.tableWidget->horizontalHeader()->setDefaultSectionSize(55);
	
	/// ustawiam nazwy wierszy
	ui.tableWidget->setVerticalHeaderLabels(QString("x;y").split(";"));

	

	QTableWidgetItem * tableItem;
	
	/// wyswietlam wspolrzedne punktow w tabeli
	for(int i=0 ; i< curvePoints.size() ; i++)
	{
		for(int j=0 ; j<2 ; j++)
		{
		tableItem = new QTableWidgetItem();
		ui.tableWidget->setItem(j == 0 ? 0 : 1 , i, tableItem);
		/// kazdemu itemowi przypisuje okreslona wartosc
		tableItem->setText(j == 0 ? QString::number(curvePoints[i].x()) : QString::number(curvePoints[i].y()));
		}
	}
}

void PointsView::cellClicked(int row, int column)
{
	/// pobieram wartosci kliknietej komorki
	double xValue = ui.tableWidget->item(row == 0 ? row : row -1, column)->text().toDouble();
	double yValue = ui.tableWidget->item(row == 0 ? row+1 : row, column)->text().toDouble();

	emit cellValue(xValue,yValue);
}